Re: [GENERAL] escaping wildcard chars
От | Herouth Maoz |
---|---|
Тема | Re: [GENERAL] escaping wildcard chars |
Дата | |
Msg-id | l03130304b3c20462e0db@[147.233.159.109] обсуждение исходный текст |
Ответ на | escaping wildcard chars ("Dan Wilson" <dan_wilson@geocities.com>) |
Список | pgsql-general |
At 08:16 +0300 on 26/07/1999, Dan Wilson wrote: > SELECT typname from pg_type WHERE NOT LIKE '_%' > > It gives me an empty set. > > Is there any way to escape the underscore. I tried to use '\_%', but that > didn't help. Any suggestions? Yes. Use '\\_%' instead. You see, a backslash is interpreted immediately as "take the next char literally". This passes the underscore literally to LIKE. Which is the same as '_%'. If you put a double backslash, the first backslash takes the second one literally, thus passing '\_%' to LIKE. And then LIKE knows that it should treat the underscore as non-special. Ugly, ugly. I think we had a discussion either here or in one of the other lists regarding the ESCAPE clause to LIKE. This behavior means that even if we write ESCAPE '\', it won't work (Actually, it should be '\\'. I really hate those backslashes. They are blatantly incompatible with SQL92 and will cause standard SQL to fail on Postgres, (and of course, Postgres code to fail on other databases). There should be a setting, either in the backend or in a SET command, such as "BACKSLASH_BEHAVIOR", which will be either "literal" or "escape". It can default to the current behavior (namely "escape") so that current code won't fail, but will enable people to write sane standard code. Herouth -- Herouth Maoz, Internet developer. Open University of Israel - Telem project http://telem.openu.ac.il/~herutma
В списке pgsql-general по дате отправления: